iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0

依賴注入(Dependency Injection, DI),這裡要先聲明,依賴注入不是Spring Boot專有,它是一種設計模式。那麼,這種設計模式的意義、目的到底是什麼呢?簡單來說就是2個字,解耦。用來降低物件與物件之間的耦合性。

依賴注入按照字面意義應有 依賴 & 注入 兩種行為,接下來讓我分別介紹他們的概念

依賴(Dependency)

在程式開發中,我們很常會遇到物件間相依的情況,舉例如下:
我有一個service主要功能是用來查詢和更新銀行帳戶的餘額,此service主要只負責處理業務邏輯,不負責與資料庫溝通。如果它需要知道某個帳戶目前的餘額則需要仰賴repository溝通&操作資料庫。

@Service("TransactionService")
public class TransactionService{

    private AccountRepository accountRepository;
    public TransactionService(AccountRepository accountRepository){
        this.accountRepository  = accountRepository;
    }

    public void queryAccountAmount(Long accountId) {

        BigDecimal currentBalance = accountRepository.getAccountBalance(accountId);
    }

    public void updateAccountAmount(Long accountId, BigDecimal amount) {
        BigDecimal currentBalance = accountRepository.getAccountBalance(accountId);

        BigDecimal newBalance = currentBalance.add(amount);
        accountRepository.updateAccountBalance(accountId, newBalance);
    }
}

由此可知,TransactionService依賴AccountRepository。AccountRepository只負責執行資料庫的操作,不依賴TransactionService

業務邏輯層依賴資料存取層,這種依賴關係是很常見的。


上一篇
Day6 - 控制反轉
下一篇
Day8 - 依賴注入(下)
系列文
這些年SpringBoot實戰開發教會我的事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言